﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entity
{
    public class WMSOrderSalesOrder
    {
        /// <summary>
        /// 销售订单Id
        /// </summary>
        [Key]
        public int sales_order_id { get; set; }

        /// <summary>
        /// 客户id
        /// </summary>
        public int customer_id { get; set; }

        /// <summary>
        /// 规则id
        /// </summary>
        public int rule_id { get; set; }

        /// <summary>
        /// 销售单号
        /// </summary>
       
        public string sales_order_no { get; set; }

        /// <summary>
        /// 销售日期
        /// </summary>
    
        public string sales_date { get; set; }

        /// <summary>
        /// 单据状态
        /// </summary>
       
        public string document_status { get; set; }

        /// <summary>
        /// 销售负责人
        /// </summary>
       
        public int person_in_charge { get; set; }

        /// <summary>
        /// 货品信息id
        /// </summary>
        public int product_id { get; set; }

        /// <summary>
        /// 审核人
        /// </summary>
      
        public string reviewer { get; set; }

        /// <summary>
        /// 审核时间
        /// </summary>
        public DateTime? review_time { get; set; }

        /// <summary>
        /// 组织机构id
        /// </summary>
     
        public int organizations_id { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
       
        public string note { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        
        public int create_by { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? create_time { get; set; }

        /// <summary>
        /// 修改人
        /// </summary>
      
        public int update_by { get; set; }

        /// <summary>
        /// 修改时间
        /// </summary>
        public DateTime? update_time { get; set; }

        /// <summary>
        /// 是否删除
        /// </summary>
        
        public string is_delete { get; set; }

        /// <summary>
        /// 附件编号
        /// </summary>
       
        public string annex_code { get; set; }

        /// <summary>
        /// 审核结果
        /// </summary>
        public string audit_result { get; set; }

        /// <summary>
        /// 审核意见
        /// </summary>
        public string audit_opinion { get; set; }

    }

    // 请求参数实体（包含主表和明细列表）
    public class SalesOrderRequest
    {
        public WMSOrderSalesOrder Order { get; set; }               // 主表数据
        public List<WMSOrderSalesOrderDetails> Details { get; set; } // 多条明细数据
    }



    public class WMSOrderSalesOrder2
    {
        /// <summary>
        /// 销售订单Id
        /// </summary>
        [Key]
        public int sales_order_id { get; set; }
        // 销售订单表字段
        public string sales_order_no { get; set; }          // 销售订单编号
        public string document_status { get; set; }         // 单据状态
        public DateTime? sales_date { get; set; }           // 销售日期（允许为null）
        public string note { get; set; }                    // 备注

        // 制单人信息
        public string user_name { get; set; }               // 制单人用户名（create_user关联）
        public int? create_by { get; set; }                 // 制单人ID（int类型，允许为null）
        public DateTime? create_time { get; set; }          // 创建时间（允许为null）

        // 审核信息
        public string reviewer { get; set; }                // 审核人
        public DateTime? review_time { get; set; }          // 审核时间（允许为null）

        // 客户表字段
        public string customer_name { get; set; }           // 客户名称
        public string contact_person { get; set; }          // 联系人
        public string contact_phone_number { get; set; }    // 联系电话

        // 销售部门及负责人
        public string organization_name { get; set; }       // 销售部门名称
        public string user_name1 { get; set; }              // 销售负责人用户名（u关联，解决重名）

        // 明细表聚合数据
        public int? prod_num { get; set; }                  // 产品总数（SUM聚合，允许为null）
        public decimal? saleamount { get; set; }            // 销售总金额（SUM聚合，允许为null）

        // 销售货品聚合
        public string product_name { get; set; }            // 产品名称集合（STRING_AGG结果）

        // 制单人所在部门
        public string department { get; set; }              // 制单人所在部门
    }


    // 批量审核参数模型
    public class BatchAuditModel
    {
        public List<int> OrderIds { get; set; }
        public string AuditResult { get; set; } // "1"=通过，"0"=驳回
        public string AuditOpinion { get; set; }

        public string Reviewer { get; set; } // 新增审核人字段
    }

    // 批量撤销参数模型
    public class BatchRevokeModel
    {
        public List<int> OrderIds { get; set; }
    }





    public class WMSOrderSalesOrder3
    {
        /// <summary>
        /// 销售订单Id
        /// </summary>
        [Key]
        public int sales_order_id { get; set; }
        // 销售订单表字段
        public string sales_order_no { get; set; }          // 销售订单编号
        public string document_status { get; set; }         // 单据状态
        public DateTime? sales_date { get; set; }           // 销售日期（允许为null）
        public string note { get; set; }                    // 备注

        // 制单人信息
        public string create_user_name { get; set; }               // 制单人用户名（create_user关联）
        public int? create_by { get; set; }                 // 制单人ID（int类型，允许为null）
        public DateTime? create_time { get; set; }          // 创建时间（允许为null）

        // 审核信息
        public string reviewer { get; set; }                // 审核人
        public DateTime? review_time { get; set; }          // 审核时间（允许为null）

        // 客户表字段
        public string customer_name { get; set; }           // 客户名称
        public string contact_person { get; set; }          // 联系人
        public string contact_phone_number { get; set; }    // 联系电话

        // 销售部门及负责人
        public string org_name { get; set; }       // 销售部门名称
        public string sales_person { get; set; }              // 销售负责人用户名（u关联，解决重名）

        // 明细表聚合数据
        public int? prod_num { get; set; }                  // 产品总数（SUM聚合，允许为null）
        public decimal? saleamount { get; set; }            // 销售总金额（SUM聚合，允许为null）

        // 销售货品聚合
        public string product_name { get; set; }            // 产品名称集合（STRING_AGG结果）

        // 制单人所在部门
        public string department { get; set; }              // 制单人所在部门

        //销售部门名称
        public string sales_department { get; set; }   // 销售部门名称，用于出库管理新增关联查询
    }



    public class WMSOrderSalesOrder4
    {
        public string sales_order_no { get; set; }          // 销售订单编号
        // 货品编号
        public string product_code { get; set; }

        // 货品名称
        public string product_name { get; set; }

        // 规格型号
        public string specification_model { get; set; }

        // 单位（来自字典表的DictLabel）
        public string DictLabel { get; set; }

        // 销售单价（decimal对应数据库DECIMAL类型）
        public decimal selling_unit_price { get; set; }

        // 销售数量（int对应数据库INT类型）
        public int prod_num { get; set; }

        // 销售金额（decimal对应数据库DECIMAL类型）
        public decimal saleamount { get; set; }

        // 备注（允许为null）
        public string note { get; set; }

        // 已出库数量（int对应数据库INT类型）
        public int outbound_num { get; set; }

        // 未出库数量（计算字段，decimal类型）
        public decimal unoutbound { get; set; }

        // 货品类型名称
        public string product_type_name { get; set; }

        // 当前库存（decimal对应数据库DECIMAL类型）
        public decimal current_inventory { get; set; }


    }



}
